package com.spring;

import com.spring.dyn.ProxyFactory;
import com.spring.statics.StaticProxyCalculator;

/**
 * description: 代理模式调用
 */
public class UseAop {

    public static void main(String[] args) {

        // TODO：静态代理
        //房东 目标类，核心业务类
        Calculator target = new CalculatorPureImpl();

        //中介 代理，通过代理执行相关方法
        Calculator proxy = new StaticProxyCalculator(target);

        //调用 代理类内包含了额外代码逻辑、业务类核心代码逻辑
        int add = proxy.add(1, 1);
        System.out.println("add = " + add);


        // TODO：动态代理
        //jdk代理：传入要代理的目标类实现的接口
        ProxyFactory factory = new ProxyFactory(target);
        // TODO：要使用接口接值 = 代理对象
        Calculator proxy1 = (Calculator) factory.getProxy();
        proxy1.add(1,1);
    }
}
